<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //对象的function里面对应的叫做方法，里面的this为当前对象的地址
        //而对象里面的方法，方法里面的函数的this代表window


        //   let tw={
        //       site:"唐玮",
        //       show: function(){ //这是个方法，this可以掉调
        //           console.log(window.name);  
        //       }
        //   };
        //   tw.show()//唐玮

        //当是一个函数的时候
//         name="sb";
//       let tw={
//           site:"唐玮",
//           show:function(){
//               function func(){//函数，this访问不到site
//                 console.log(window.name);//sb,window当前窗口的name
//               }
//               func();
//           }
//       }
//  tw.show()

//   let lesson={
//         site:"唐玮",
//         lists:["js","css","mysql"],
//         show: function(){
//             const self=this; //定义一下show()的this，就是lesson对象,这样下面的函数才能访问到
//                               //因为作用域的不同
//             return this.lists.map(function(item){
//                 return `${self.site}学-${item}`;
//             },this)//还可以在map的方法里面写入this,也表示表示lesson(只有有些特殊的方法才有)
//         }
//   }
//   console.table(lesson.show());



  let tw={
      site:"唐玮",
      show: function(){
          (()=>{
              console.log(this.site);//window，不是tw对象的地址,除非改为箭头函数
          })();
          
      }
  }
  tw.show();//Window {window: Window, self: Window, document: document, name: '', location: Location, …}


  //怎么解决这个问题？？？？？？？？
  //只需要用箭头函数来解决就行，它就会自动解决了
  let lesson={
        site:"唐玮",
        lists:["js","css","mysql"],
        show: function(){
            // const self=this; 
            return this.lists.map((item)=>{ //就指向当前对象了
                return `${this.site}学-${item}`;
            })
        }
  }
  console.table(lesson.show());
    </script>
</body>
</html>